#ifndef HUFF_H
#define HUFF_H

#include <fstream>
#include <string>
#include <stdio.h>
#include <iostream>
#include <map>
#include <vector>

using namespace std;

struct Node
{
    char feat;//符号
    float prob;//概率
    Node * left;//左节点，概率小的节点，0
    Node* right;//右节点，概率大的节点，1
};


class Huffman
{

    //string outDir;
private:

    //Node * tree;
    multimap<float,Node *> all_nodes;
    Node* root;//最终结果树的根节点
    string stack;


public:
    void process();//执行算法，返回根节点
    void trav_print(Node* node,FILE* fw);
    bool read_from_file(char *input_dir);
    bool write_to_file(char* out_dir);

};

#endif